﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using SERIX.Util;
using Pms.Utils;
using Biblioteca.Utils;
using System.Collections.Generic;
using Biblioteca.DataBase;
using System.Data.Common;

namespace SERIX
{
    /*
     * Autor      : IT-Developer1
     * Data       : 02/04/2010 11:03:48
     * Descricao  : 
     * Alteracoes : 
     * 
     */
    public partial class VinculosDscOpcoes : Seguranca
    {
        string _idt;
        CriteriosPesquisa criteriosPesquisa;

        protected void Page_Load(object sender, EventArgs e)
        {
            base.OnLoad(e);
            //btnNovo.Enabled = _permissaoManut.Equals(Constantes.PERM_MANUTENCAO);

            SetaDadosMestre();
            InicializarCriteriosPesquisa();
            if (!RestaurarPesquisa() && !Page.IsPostBack)
            {
                SalvarPesquisa();
                Session["PagAtual"] = 1;
                Pesquisar();
            }
            //Navegador1.Pesquisar += new SERIX.Controles.Navegador.PesquisarDelegate(Pesquisar);
        }

        private void SetaDadosMestre()
        {
            string login = UsuAut.Login;
            if (!IsPostBack)
            {
                if (!String.IsNullOrEmpty(Request["idt"]))
                {
                    _idt = Server.UrlDecode(Criptografia.Descriptografar(Request["idt"]));
                    Session[Page.ToString() + "_IdtMestre"] = _idt;
                }
                CIndicadoresAcoes dao = CIndicadoresAcoes.PesquisaporCodigo(_idt, login);
                lblRotulo.Text = dao.Rot_ind;
                lblIndicador.Text = dao.Dsc_ind;
                ddlDescVinculo.SelectedValue = dao.Tpo_vinc_opcao;
            }
            else
            {
                _idt = (string)Session[Page.ToString() + "_IdtMestre"];
            }
        }
        private void InicializarCriteriosPesquisa()
        {
            criteriosPesquisa = (CriteriosPesquisa)Session[Page.ToString()];
        }

        private void SalvarPesquisa()
        {
            if (criteriosPesquisa == null)
            {
                criteriosPesquisa = new CriteriosPesquisa() { FiltroSimples = "", PaginaAtual = 1 };
                Session[Page.ToString()] = criteriosPesquisa;
            }
            else
            {
                criteriosPesquisa.FiltroSimples = ddlDescVinculo.SelectedValue;
                criteriosPesquisa.PaginaAtual = 1;
            }
        }

        private bool RestaurarPesquisa()
        {
            if (!IsPostBack && criteriosPesquisa != null)
            {
                Pesquisar();
                return true;
            }
            return false;
        }

        protected void Todos()
        {
            string login = UsuAut.Login;
            lblFiltro.Text = "Filtro: Todas as Descrições de Opções do Indicador";
            string SQL = @"SELECT NVL(VO.IDT_IND, 0) IDT_IND, DO.IDT_DESC, DO.DESCRICAO FROM Serix.SRX_VINCULOS_DESC_OPCOES VO 
                            RIGHT JOIN Serix.SRX_DESCRICOES_OPCOES DO ON (VO.IDT_IND = :IDT AND VO.IDT_DESC = DO.IDT_DESC)
                            WHERE DO.TPO_VINC = :TPO
                            ORDER BY DESCRICAO";
            Query qy = null;
            try
            {
                qy = new Query(BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, login, BiblioPMS.Demo), SQL);
                qy.AdicionarParametro("IDT", DbType.String, _idt);
                qy.AdicionarParametro("TPO", DbType.String, ddlDescVinculo.SelectedValue);
                gridView.DataSource = qy.ObterDataTable();
                gridView.DataBind();
                //Navegador1.CarregueBotoes(qy.QtdLinhas());
            }
            catch
            {
                if (qy.EstadoConexao() == ConnectionState.Open)
                    qy.FecharConexao();
            }
            finally
            {
                if (qy.EstadoConexao() == ConnectionState.Open)
                    qy.FecharConexao();
            }
        }

        protected void Pesquisar()
        {
            Todos();
            //            string ObterTodos = usuAut.Login;
            //            Query qy = null;
            //            try
            //            {
            //                //Se o filtro nao estiver vazio 
            //                if (ddlEstados.SelectedValue != "")
            //                {
            //                    Session["PagAtual"] = 1;
            //                    lblFiltro.Text = "Filtro: Estado = '\'" + ddlEstados.SelectedValue + "'\'.";
            //                    string SQL = @"DEFINIR";
            //                    try
            //                    {
            //                        qy = new Query(BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, ObterTodos, BiblioPMS.Demo), SQL);
            //                        qy.AdicionarParametro("PARAM", DbType.String, _idt);
            //                        gridView.DataSource = qy.ObterDataTable();
            //                        gridView.DataBind();
            //                        //Navegador1.CarregueBotoes(qy.QtdLinhas());
            //                    }
            //                    catch (Exception ex)
            //                    {
            //                        if (qy.EstadoConexao() == ConnectionState.Open)
            //                            qy.FecharConexao();
            //                        Todos();
            //                    }
            //                    finally
            //                    {
            //                        if (qy.EstadoConexao() == ConnectionState.Open)
            //                            qy.FecharConexao();
            //                    }
            //                }
            //                else
            //                    //Caso o filtro esteja vazio, mostre todos
            //                    Todos();
            //            }
            //            catch
            //            //Em caso de erro, mostre todos
            //            {
            //                if (qy.EstadoConexao() == ConnectionState.Open)
            //                    qy.FecharConexao();
            //                Todos();
            //            }
        }

        protected void btnPequisar_Click(object sender, EventArgs e)
        {
            SalvarPesquisa();
            Pesquisar();
        }

        protected void btnTodos_Click(object sender, EventArgs e)
        {
            SalvarPesquisa();

            Session["PagAtual"] = 1;
            Todos();
        }

        protected void Ok_Button_Click(object sender, EventArgs e)
        {
            try
            {
                string login = UsuAut.Login;
                List<string> descricoes = new List<string>();

                CheckBox cb = null;
                foreach (GridViewRow row in gridView.Rows)
                {
                    cb = (CheckBox)row.FindControl("ckbAssociado");
                    if (cb.Enabled && cb.Checked)
                        descricoes.Add(Convert.ToString(gridView.DataKeys[row.RowIndex].Value));
                }
                CVinculosDescOpcoes.DescricoesEmLote(_idt, descricoes, login);
                lblErro.Text = string.Format("Atualização realizada com sucesso! Em {0}", DateTime.Now.ToLongTimeString());
                lblErro.Visible = true;
            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }

        }

        protected void Cancelar_Button_Click(object sender, EventArgs e)
        {
            Response.Redirect("IndicadoresAcao.aspx?&idt=" + Server.UrlEncode(Criptografia.Criptografar(_idt)));
        }

        protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string marcado = ((DataRowView)e.Row.DataItem).Row["IDT_IND"].ToString();
                CheckBox cb = (CheckBox)e.Row.FindControl("ckbAssociado");
                cb.Checked = marcado != "0";
            }
        }

        protected void lblErro_Load(object sender, EventArgs e)
        {
            lblErro.Text = "";
            lblErro.Visible = false;
        }
    }
}
